package com.example.algorithm.no0007.solution;

import com.example.algorithm.no0007.Solution;

/**
 * @Description 整数反转解答
 * 时间复杂度：O(log(x))，x中大约有 log_{10}(x)位数字。
 * 空间复杂度：O(1)。
 * @ClassName Solution1
 * @Author Administrator
 * @Date 2020/5/20 10:26
 * @Version 1.0.0
 */
public class Solution1 implements Solution {
    @Override
    public int reverse(int x) {
        int rev = 0;
        while(x!=0) {
            //每次取末尾数字
            int pop = x % 10;
            //判断是否 大于 最大32位整数
            if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) {
                return 0;
            }
            //判断是否 小于 最小32位整数
            if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) {
                return 0;
            }
            rev = rev*10 + pop;
            x /= 10;
        }
        return rev;
    }
}
